/* zippo2.c -- 通过指针获取zippo的信息 */
#include <stdio.h>
/**
 * 这里探索指针和指向指针的指针，比较复杂烧脑，希望能加深对指针的理解。
 * 跟书上的例子有所不同，稍微进行了修改，把const去掉了。
*/
int main(void)
{
    int **pp2;
    // const int **pp2;
    int *p1;
    int n = 13;
    // const int n = 13;
    // 这里把p1的地址存进了pp2，而p1存储的内容还是随机值
    pp2 = &p1;
    // 这里相当于把*pp2其实就是p1的内容修改成了n的地址，于是p1的指向就是n
    *pp2 = &n;
    // 把p1的指向内容修改为10，相当于把n重新赋值为10
    *p1 = 10;
    printf("n = %d\n", n);
    return 0;
}

// 一点感悟，指针的本质就是当我有了某个变量的地址，就可以通过此地址去肆意修改变量的内容
// 当我拥有了某个指针的地址，就可以通过这个地址去修改这个指针的内容，当然我们不能随意修改，修改内容也是修改成为一个地址，不然就会报错